package com.wosai.medical.hospital.demo.controller.patient.response;

import io.swagger.annotations.ApiModel;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;

import java.io.Serializable;
import java.util.List;

@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
@ApiModel("门诊待缴费明细")
public class FeeOrder implements Serializable {
    /**
     * 注意事项之类的提示,用于指引用户缴费相关的注意事项或细则说明[可空]
     */
    private String prompt;
    /**
     * 订单生成时间(yyyy-MM-dd HH:mm:ss)
     */
    private String createTime;
    /**
     * 科室
     */
    private Dept dept;

    /**
     * 医生
     */
    private Doctor doctor;
    /**
     * 患者
     */
    private Patient patient;

    /**
     * 缴费总金额
     */
    private Long totalAmount;

    /**
     * 应缴费总金额
     */
    private Long payAmount;

    /**
     * 处方列表集合
     */
    private List<Recipe> recipes;

    @Data
    @Builder
    @ApiModel("科室")
    public static class Dept implements Serializable {
        /**
         * 科室分类代码
         */
        private String code;
        /**
         * 科室分类名称
         */
        private String name;

    }

    @Data
    @Builder
    @ApiModel("医生")
    public static class Doctor implements Serializable {
        /**
         * 科室分类代码
         */
        private String code;
        /**
         * 科室分类名称
         */
        private String name;
    }

    @Data
    @Builder
    @ApiModel("缴费患者")
    public static class Patient implements Serializable {
        /**
         * 患者代码
         */
        private String code;
        /**
         * 患者姓名
         */
        private String name;
    }

    @Data
    @Builder
    @ApiModel("处方")
    public static class Recipe implements Serializable {
        /**
         * 处方代码
         */
        private String code;
        /**
         * "处方类别/费别名称(用于显示)"
         */
        private String type;
        /**
         * 费用金额
         */
        private Long fee;

        /**
         * 项目明细集合
         */
        private List<Item> items;
    }

    @Data
    @Builder
    @ApiModel("项目明细")
    public static class Item implements Serializable {
        /**
         * 项目编号
         */
        private String code;
        /**
         * 项目名称
         */
        private String name;
        /**
         * 单位(用于显示)
         */
        private String uint;
        /**
         * 单价
         */
        private Long price;

        /**
         * 规格(用于显示)
         */
        private String spec;

        /**
         * 数量
         */
        private Integer quantity;

        /**
         * 项目小计(单价x数量)
         */
        private Long totalFee;
    }

}